## ВВЕДЕНИЕ

### Что такое Git?


### Установка Git под Linux и Mac


### Установка Git под Windows


### Windows: Git Bash, Powershell

## КОНФИГУРАЦИЯ

### Основная конфигурация


### Настройка редактора


### Алиасы (псевдонимы для команд)


### Проблема с переводами строк Windows/Linux


### Настройка core.autocrlf для нормализации переводов строк


### Атрибуты: .gitattributes, text, eol


### Игнорирование: .gitignore


### Подключение файлов в конфиг: include

## ОСНОВЫ

### Создание репозитория, первый коммит


### Git и права на файлы


### Git show, автор и коммиттер


### Добавление файлов и директорий, git status


### Хороший коммит


### Зачем нужен индекс?


### Коммиты без git add


### Удаление и переименование файлов

## ВЕТКИ

### Введение


### Создание и переключение


### Команда checkout при незакоммиченных изменениях


### Создание новой ветки из последних коммитов, передвижение веток


### Состояние отделённой HEAD


### Восстановление предыдущих версий файлов


### Просмотр истории и старых версий, ~ и :/


### Слияние перемоткой


### Удаление веток


### Лог ссылок: reflog


### Сборка мусора

## ТЕГИ

### Теги, основные действия с тегами


### Использование тегов для экспорта с describe, archive

## RESET

### Жесткий reset, отмена коммита


### Мягкий reset, замена и объединение коммитов


### Правка последнего коммита: commit --amend


### Смешаный reset, отмена индексации


### Жесткий reset с сохранением изменений: --keep


### Особый reset для отмены слияний: --merge


### Виды reset – таблица в документации

## ОЧИСТКА ПРОЕКТА ОТ ИЗМЕНЕНИЙ

### Очистка проекта от изменений

## ПРОСМОТР

### Сравнение коммитов, веток и не только: git diff


### Сравнение по словам, драйвер diff


### Сравнение разных форматов, кастомизация diff


### Вывод истории: git log, форматирование коммитов


### Диапазоны коммитов для git log и не только


### Вывод git log коммитов, меняющих нужный файл


### Поиск в истории, фильтры для git log


### Кто написал эту строку? git blame

## СЛИЯНИЕ

### Истинное слияние и разрешение конфликтов в git merge


### Коммит слияния, дальнейшие слияния


### Отмена слияния


### Семантические конфликты и их разрешение


### Слияние с сохранением веток, запрет перемотки --no-ff


### Слияние без связи с источником: merge --squash


### Слияние без конфликтов через драйвер union, свои драйверы


### Стратегии слияния

## КОПИРОВАНИЕ КОММИТОВ

### Копирование коммитов: cherry-pick


### Просмотр эквивалентных коммитов: cherry, cherry-mark

## ПЕРЕМЕЩЕНИЕ КОММИТОВ

### Перебазирование веток: rebase


### Rebase против merge: сравнение подходов


### Тесты при rebase, rebase -x


### Перенос части ветки, rebase --onto


### Перебазирование слияний, rebase -p


### Интерактивное перебазирование, rebase -i


### Коммиты-заплатки: rebase autosquash

## RERERE

### Авторазрешение повторных конфликтов

## ОБРАЩЕНИЕ КОММИТОВ

### Обратные коммиты, revert


### Отмена слияния через revert


### Повторное слияние с rebase

## ДАТЫ В GIT

### Передача даты в гит, форматы дат


### Форматирование для вывода дат
